package com.kk.miaosha.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kk.miaosha.Vo.ItemQuery;
import com.kk.miaosha.entity.Item;
import com.kk.miaosha.exception.R;
import com.kk.miaosha.service.ItemService;
import com.sun.org.apache.regexp.internal.RE;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author : K k
 * @date : 12:11 2020/10/23
 */
@RestController
@RequestMapping("item")
@Slf4j
@Api(value = "ItemController",description = "商品业务接口")
public class ItemController {
    @Autowired
    private ItemService itemService;

    //获取所有商品列表
    @GetMapping("getItems")
    public R getItems(){
        return R.ok().data("items",itemService.list(null));
    }

    //查商品列表
    @PostMapping("/getItemList/{page}/{limit}")
    public R getItemList(@PathVariable("page") int page, @PathVariable("limit") int limit, @RequestBody ItemQuery itemQuery){
        Page<Item> queryPage=new Page<>(page,limit);//分页器
        QueryWrapper<Item> itemQueryWrapper = new QueryWrapper<>();
        if(itemQuery!=null) {
            if (itemQuery.getName() != null && !itemQuery.getName().isEmpty()) {
                itemQueryWrapper.like("name", itemQuery.getName());
            }
            if (itemQuery.getCode() !=null && !itemQuery.getCode().isEmpty() ){
                itemQueryWrapper.like("code",itemQuery.getCode());
            }
        }
        IPage<Item> itemIPage = itemService.page(queryPage, itemQueryWrapper);
        return R.ok().data("items",itemIPage.getRecords())
                .data("total",itemIPage.getTotal());
    }

    //删除商品
    @PostMapping("/removeItem/{id}")
    public R removeItem(@PathVariable("id") int id){
        //查询是否存在
        boolean res = itemService.removeById(id);
        return res?R.ok().message("删除成功!"):R.error().message("删除失败");
    }

    //获取单个商品
    @GetMapping("/getItem/{id}")
    public R getItem(@PathVariable("id") int id){
        Item item = itemService.getById(id);
        return R.ok().data("item",item);
    }

    //添加商品
    @PostMapping("/addItem")
    public R addItem(@RequestBody Item item){
        if (item!=null && !item.getName().isEmpty() && item.getStock()>=0 && !item.getCode().isEmpty()){
            Item item1 = itemService.getOne(new QueryWrapper<Item>().eq("name", item.getName()));
            if (item1!=null){
                return R.error("已存在该商品");
            }
            boolean save = itemService.save(item);
            return save?R.ok():R.error();
        }
        return R.error();
    }

    //修改商品
    @PostMapping("/updateItem")
    public R updateItem(@RequestBody Item item){
        if (item!=null && !item.getName().isEmpty() && item.getStock()>=0 && !item.getCode().isEmpty()){

            boolean save = itemService.update(item,null);
            return save?R.ok():R.error();
        }
        return R.error();
    }

}
